A data center is a facility used to house computer systems and associated components, such as servers, storage systems, and virtual computing resources. Communications in data centers are commonly based on networks running the IP protocol suite. Data centers typically contain a set of routers and switches that transport traffic between the servers and to the Internet. Some of the servers at the data center are used for running the basic Internet and intranet services needed by internal users in the organization, e.g., e-mail servers, proxy servers, and DNS servers. Some data centers utilize virtualization in a hosting environment scenario to provide increased services to customers.
In software (i.e., a virtual machine (“VM”)) virtualization simulates the hardware resources of a physical server. Multiple VMs, each with their own native operating system (“OS”), can securely run on a single physical server. Hosting VMs in a data center helps bridge the gap between shared web hosting services and dedicated hosting services by allowing it to have more independence from other customer's VM implementations and costing less than it does to operate dedicated physical servers.
A virtualization environment may be embodied in a physical host system, such as server. However, a separate server or multiple servers can also implement the virtualization environment. A guest VM operates logically on top of a hypervisor within a physical host system. The hypervisor is a software layer that typically provides virtualization, e.g., versions of computing resources such as of physical processors, memory and peripheral devices. In certain embodiments, the hypervisor may operate logically on top of a host operating system; in others, it may operate directly (logically) on top of the host hardware (“bare-metal hypervisors”).
Various communication protocols are used to connect a customer's computer (the “client”) to a VM. In some embodiments, the communication protocols provide the client with a graphical interface of the VM. For example, Virtual Network Computing (“VNC”) is a graphical desktop sharing system that uses the Remote Frame Buffer (“RFB”) protocol to remotely control another computer, such as a VM. The protocol transmits keyboard and mouse events from one computer to another, relaying the graphical screen updates back in the other direction, over a network. VNC is platform-independent; however, there are clients and servers for many GUI-based operating systems and for Java.
To enhance the fidelity of the graphical screen updates received from the graphical interface, increase efficiency, provide more robust security, and or implement additional features on top of the VNC concept, enhanced, sometimes platform-specific communications protocols were created. One such communication protocol is Remote Desktop Protocol (RDP), which is an extension of the ITU-T T.128 application sharing protocol. RDP uses customized video codecs that enable video compression/decompression for the graphical screen updates. Client-side RDP applications exist for connecting, to a VM, most versions of Microsoft Windows (including Windows Mobile), Linux, Unix, Mac OS X, Android, and other modern operating systems. The operating system loads RDP into memory and once activated it is available for client access (e.g., by a RDP software client) after the VM “boots.”
Booting is the process that is initialized when a personal computer (“PC”) is first powered on. Basic Input/Output System (BIOS) software is built into a physical or virtualized computer, and is the first code run by a PC and/or VM. When the PC and/or VM starts up, the first job for the BIOS is the power-on self-test, which initializes and identifies system devices such as the CPU, RAM, video display card, keyboard and mouse, hard disk drive, optical disc drive and other hardware. The BIOS then locates boot loader software held on a peripheral device (designated as a ‘boot device’), such as a hard disk or a CD/DVD, and loads and executes that software (i.e., the operating system), giving it control of the PC. Once booted, by default the RDP server listens on TCP port 3389.